package tech.aistar.day06;

import java.util.Arrays;

/**
 * 本类用来演示: 业务类 - 操作实体类中的数据
 *
 * @author: success
 * @date: 2021/3/15 8:43 上午
 */
public class EmpBiz {

    /**
     * 添加员工
     * @param boss 上司
     * @param e 下属
     */
    public void addEmp(Emp boss,Emp e){
        //判断是否为下属在调用这个方法
        //获取boss的下属的数组
        Emp[] emps = boss.getEmps();
        //emps -> □ <- boss.getEmps()

        if(emps == null){
            System.out.println("sorry,你就是个下属,你没有任何权限添加下属");
            return;
        }
        //默认的上司的给定初始化的下属的数组的长度为0
        //在每次添加员工之前需要对数组进行扩容操作
        emps = Arrays.copyOf(emps,emps.length+1);

        //emps -> 新的□

        //通过下标进行赋值操作
        emps[emps.length-1] = e;

        //更新一下boss对象的emps的地址 - emps的值
        boss.setEmps(emps);
    }

    /**
     * 输出上司的下属信息
     */
    public void printEmp(Emp boss){

    }

    /**
     * 换成vo的思想 - 代替散列的传入的条件变量
     *  - 软件原则 - 开闭原则 - 对内禁止修改,对外可进行拓展.
     * 查找...
     * 找出价格高于salary的所有的员工信息
     * @return
     */
    public Emp[] findByPrice(Emp[] emps,EmpVo e){
        if(null == emps || emps.length == 0){
            System.out.println("sorry...");
            return emps;
        }
        //统计条件-salary的个数
        int count = 0;

        for (Emp emp : emps) {
            if(emp.getSalary()>e.getSalary()){
                count++;
            }
        }
        if(count == 0){
            System.out.println("工资不存在!");
            return emps;
        }

        Emp[] temp = new Emp[count];
        int pos = 0;

        for (int i = 0; i < emps.length; i++) {
            if(emps[i].getSalary()>e.getSalary()){
                temp[pos++] = emps[i];
            }
        }
        return temp;
    }
}
